# -*- coding: utf-8 -*-
"""
------------------------------------------------------------------------------
    File Name:  file_opr
    Author   :  wanwei1029
    Date     :  2018/3/7
    Desc     :
------------------------------------------------------------------------------
"""
import sys

sys.path.append("..")
import samp.samp_logging as sl

logger = sl.get_logger('file_opr')


def read_file():
    """"
    1:文件路径必须linux格式
    2:因为打开文件后必须调用close()方法，显得繁琐，最好用with来读取文件，可以一个with读取多个文件。
      with open("需要打开的文件1") as f, open("需要打开的文件2") as f2:
    3：打开模式默认是r，也就是只读，还有w:写入，a:追加
       r:如果文件不存在，会报错，w:不存在则创建，存在则删除内容，a:不存在则创建，存在则追加。
       r+:可读，可写，可追加，一般使用这个模式。w+,a+用的少。
    4：读取文件的方法，有：
       read() 不带参数一次读出所有内容，可以加个size每次读取一部分。
       readlines() 同上读出后转换成一个列表。
       readline() 读一行记录，效率低，一般只在文件很大无法一次性读出时使用。
    5：写入文件的方法：
       write(content):写入content
       writelines(["1\n","2\n","3\n"]) 写入一个列表
    6:读取的时候，会读取换行符，所以需要用strip()方法去掉换行，写入的时候，如果要换行，要手工添加\n，writelines()也要添加。
    7:写入的对象必须是str。
    """

    with open("D:/temp/datingTestSet.txt", "r+") as file:
        logger.debug("file obj is {0}".format(file))
        for line in file.readlines():
            logger.debug("lines obj is {0}".format(line.strip()))


def write_file():
    with open("D:/temp/newDatingTestSet.txt", "w+") as file:
        file.write("first line\n")
        list_a = ["444\t","3\t","1.4\t","didntLike\n"]
        file.writelines(list_a)


def read_big_file(file_path, max_line=10):
    count = 0
    with open(file_path, "r+") as file:
        for line in file.readlines():
            print(line)
            count = count+1
            if count > max_line:
                break


if __name__ == '__main__':
    test_method = "read_big_file"
    if test_method == "read_file":
        read_file()
    elif test_method == "write_file":
        write_file()
    elif test_method == "read_big_file":
        read_big_file("E:\\nlp\\nas\\semanaly\\me_train\\dataset\\me_train.json")

